<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //1.删除指定数组元素
        //要求:将数组[2,0,6,1,77,52,0,25,7]中的0去掉后,形成一个不包含0的新数组.
        //案例分析:需要一个新数组用于存放筛选之后的数据
        //遍历原来的数组,把不是0的数据添加到新数组里面(注意此时要采用数组名+索引的格式接收数据)
        //新数组里面的个数,用length不断累加.

        //自己动手(与答案一样)
        /* var arr = [2, 0, 6, 1, 77, 52, 0, 25, 7];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] != 0) {
                newArr[newArr.length] = arr[i];
            }
        }
        console.log(newArr); */

        //2.翻转数组
        //要求:将数组['red','pink','blue','green','purple']的内容反过来存放
        //输出['purple','pink','blue','green','red']
        //声明一个新数组newArr
        //把旧数组索引号第4个取过来(arr.length-1).给新数组索引号第0个元素(newArr.length)
        //我们采取 递减的方式 i--
        /* var arr = ['red', 'pink', 'blue', 'green', 'purple'];
        var newArr = [];
        for (i = arr.length - 1; i >= 0; i--) {
            newArr[newArr.length] = arr[i];
        }
        console.log(arr);
        console.log(newArr);
 */

        //3.数组排序(冒泡排序)
        //3.1 复习交换两个变量的值
        //交换两个变量
        /* var num1 = 10;
        var num2 = 20;
        var temp;
        temp = num1;
        num1 = num2;
        num2 = temp;
        console.log(num1, num2); */ //20 10


        //冒泡排序
        var num;
        var arr = [5, 4, 3, 2, 1];
        //这里i=0是表示从第一个元素开始  length-1 表示趟数
        ////因为arr.length-1是执行所需的趟数  因为下标是从0开始的 那么我就选择不写上等号(这里是答案,我觉得这里写等号多余了)
        for (var i = 0; i <= arr.length - 1; i++) { //外层循环管趟数  这里相当于五趟 
            for (var j = 0; j <= arr.length - i - 1; j++) { //内层管交换次数  从第一个元素开始交换,所以j=0   
                //这里arr.length-i-1加等号就是判断最后一个1是否大于后面的2  外层的= 是判断第五次是否有值会不在符合要求内的
                //虽然说趟数比数字量少一,但是他这里没有减少趟数(还有交换),单纯的多了一次检验,容易让人理解错误
                //内部交换两个变量的值 前一个和后一个数组元素相比较
                if (arr[j] > arr[j + 1]) {
                    num = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = num;
                }
            }
        }
        console.log(arr);










        var arr = [5, 4, 3, 2, 1];
        var num = 0; //因为arr.length-1是执行所需的趟数  因为下标是从0开始的 那么我就选择不写上等号
        for (var i = 0; i < arr.length - 1; i++) { //外层控制趟数  比如321: 213 123 需要交换两次 交换的趟数=数组个数减1
            for (var j = 0; j < arr.length - 1 - i; j++) { //内层控制交换的数
                if (arr[j] > arr[j + 1]) {
                    num = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = num;
                }
            }

        }
        console.log(arr);
    </script>
</head>

<body>

</body>

</html>